package com.sigmatrix.h5.service;

import java.util.List;
import java.util.Map;

import com.sigmatrix.h5.entity.DisDealer;
import com.sigmatrix.h5.entity.DisDealerAcct;
import com.sigmatrix.h5.entity.DisDealerAcctRegAudit;
import com.sigmatrix.h5.entity.DisRoleRes;
import com.sigmatrix.h5.entity.DisTerminalShop;
import com.sigmatrix.h5.exception.ServiceException;
import com.sigmatrix.h5.response.Response;
import com.sigmatrix.h5.web.vo.LoginVo;
import com.sigmatrix.sc.jdbc.common.service.Service;
/**
 * 
 *@ClassName: DisDealersAcctService
 *@Description: CRM账号
 *@author MH
 *@date 2017年12月18日 下午8:07:17
 */
public interface DisDealerAcctService extends Service<DisDealerAcct, Integer>{
	
	DisDealerAcct findByUserName(String userName);
	/**
	 * 
	 *@Title: checkPermission
	 *@Description: 检查权限
	 *@return boolean
	 *@author MH
	 *@date 2017年12月18日 下午8:58:17
	 *@param id
	 *@param code
	 *@return
	 */
	DisRoleRes checkPermission(Integer userId, String eseCode,String moduleCode);
	
	/**
	 * 
	 *@Title: save
	 *@Description: 创建CRM账号，并授权为ADMIN
	 *@return DisDealerAcct
	 *@author MH
	 *@date 2017年11月13日 下午1:34:26
	 *@param audit
	 *@param dealer
	 *@return
	 */
	DisDealerAcct save(DisDealerAcctRegAudit audit,DisDealer dealer);
	
	void saveRoleInfo(Integer dealer,Integer acctId);
	
	/**
	 * 
	 *@Title: getDealers
	 *@Description:查询当前账号关联的经销商
	 *@return Map<Integer,String>
	 *@author MH
	 *@date 2018年1月16日 下午6:20:34
	 *@param dealerId
	 *@return
	 */
	Map<Integer, String> getDealers(Integer dealerId);
	
	/**
	 * 
	 *@Title: findByPromotionCode
	 *@Description:通过推广码查询
	 *@return DisDealerAcct
	 *@author MH
	 *@date 2018年1月23日 上午10:54:56
	 *@param promotionCode
	 *@return
	 */
	DisDealerAcct findByPromotionCode(String promotionCode);
	
	/**
	 * 
	 *@Title: findSalesMan
	 *@Description:查询服务人员
	 *@return DisDealerAcct
	 *@author MH
	 *@date 2018年2月8日 下午6:22:11
	 *@param id
	 *@return
	 */
	DisDealerAcct findSalesMan(Integer id);
	
	/**
	 * 小程序端反向注册
	 * @param data
	 * @param dealer
	 * @param shop
	 * @return 
	 */
	Integer save(DisDealerAcctRegAudit data, DisDealer dealer, DisTerminalShop shop);
	/**
	 * 
	 *@Title: checkPhone
	 *@Description:验证手机号是否已经注册
	 *@return boolean
	 *@author wjwei
	 *@date 2018年3月7日 下午7:14:23
	 *@param phone
	 *@return
	 */
	boolean checkPhone(String phone);
	/**
	 *@Title: validateLogin
	 *@Description: 验证登录信息
	 *@return Response
	 *@date 2017年8月14日 下午11:59:07
	 *@param request
	 *@throws ServiceException
	 */
	Response validateLogin(final LoginVo acctLoginVo) throws ServiceException;
	
	/**
	 * 通过 openId获取 DisDealerAcct
	 * @param openId
	 * @return
	 */
	List<DisDealerAcct> findByOpenId(String openId);

}
